package array

// Chunk 将数组（array）拆分成多个 size 长度的区块，并将这些区块组成一个新数组。
// 如果array 无法被分割成全部等长的区块，那么最后剩余的元素将组成一个区块。 size默认=1
func Chunk(array []T, size ...int) [][]T {
	var ret [][]T
	var sum = 1
	if len(size) > 0 {
		sum = size[0]
	}
	if sum <= 0 {
		sum = 0
	}
	var chunk []T
	var count = 0
	for _, t := range array {
		if count == sum {
			ret = append(ret, chunk)
			chunk = nil
			count = 0
			if sum == 0 {
				continue
			}
		}
		count++
		chunk = append(chunk, t)
	}
	if chunk != nil {
		ret = append(ret, chunk)
	}
	return ret
}
